Fix frame size allocation
authorMatthias Clasen <matthiasc@src.gnome.org>
Fri, 13 Jun 2008 04:56:25 +0000 (04:56 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 13 Jun 2008 04:56:25 +0000 (04:56 +0000)
svn path=/trunk/; revision=20368

ChangeLog
gtk/gtkentry.c

index eb1ef4cb5e67cbc487fa246a8be56b733bf2da2c..1a50541dce0d5a367d7d5b991b610eb764094bac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-06-13 Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkentry.c (gtk_entry_draw_frame): Fix frame size allocation.
+       Patch by Jan Arne Peterson
+
 2008-06-12  Matthias Clasen  <mclasen@redhat.com>
 
        Bug 537985 – gtk_init_with_args() doesn't open a display after
index 6011293b30de83b39bc35309b0e2fa8aca9035af..26c41466bc2e9a76ab3afc6873470738f3d46273 100644 (file)
@@ -47,6 +47,7 @@
 #include "gtkseparatormenuitem.h"
 #include "gtkselection.h"
 #include "gtksettings.h"
+#include "gtkspinbutton.h"
 #include "gtkstock.h"
 #include "gtktextutil.h"
 #include "gtkwindow.h"
@@ -1558,16 +1559,22 @@ gtk_entry_draw_frame (GtkWidget    *widget,
                       GdkRectangle *area)
 {
   GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
-  gint x, y, width, height;
-  gint xborder, yborder;
-  
-  get_text_area_size (GTK_ENTRY (widget), &x, &y, &width, &height);
-  _gtk_entry_get_borders (GTK_ENTRY (widget), &xborder, &yborder);
+  gint x = 0, y = 0, width, height;
 
-  x -= xborder;
-  y -= yborder;
-  width += xborder * 2;
-  height += yborder * 2;
+  gdk_drawable_get_size (widget->window, &width, &height);
+
+  /* Fix a problem with some themes which assume that entry->text_area's
+   * width equals widget->window's width */
+  if (GTK_IS_SPIN_BUTTON (widget))
+    {
+      gint xborder, yborder;
+
+      get_text_area_size (GTK_ENTRY (widget), &x, NULL, &width, NULL);
+      _gtk_entry_get_borders (GTK_ENTRY (widget), &xborder, &yborder);
+
+      x -= xborder;
+      width += xborder * 2;
+    }
 
   if (GTK_WIDGET_HAS_FOCUS (widget) && !priv->interior_focus)
     {